// sparkAiServiceHttp.ts
// 基于HTTP的AI服务模块，通过后端代理调用讯飞星火AI

/**
 * 通过后端代理使用讯飞星火AI分析药物相互作用
 * @param drug1 第一种药物名称
 * @param drug2 第二种药物名称
 * @param interactionDescription 相互作用描述
 * @param options 配置选项
 * @returns Promise包含AI分析结果
 */
export async function analyzeDrugInteractionWithSparkHttp(
  drug1: string,
  drug2: string,
  interactionDescription: string,
  options: {
    model?: string;
  }
): Promise<string> {
  try {
    const requestBody = {
      drug1,
      drug2,
      interactionDescription,
      type: 'main',
      model: options.model || 'pro'
    };
    
    console.log('发送到后端AI服务的请求:', JSON.stringify(requestBody));
    
    const response = await fetch('/api/ai/analyze', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(requestBody)
    });
    
    if (!response.ok) {
      throw new Error(`HTTP错误! 状态: ${response.status}`);
    }
    
    const data = await response.json();
    console.log('收到后端AI服务响应:', data);
    
    if (data.error) {
      throw new Error(data.error);
    }
    
    // 修改返回值处理以匹配后端响应格式
    return data.analysis || data.result || '';
  } catch (error) {
    console.error('调用后端AI服务时出错:', error);
    throw new Error(`调用AI服务时出错: ${error instanceof Error ? error.message : '未知错误'}`);
  }
}

/**
 * 通过后端代理使用讯飞星火AI生成详细分析
 * @param drug1 第一种药物名称
 * @param drug2 第二种药物名称
 * @param interactionDescription 相互作用描述
 * @param options 配置选项
 * @returns Promise包含AI分析结果
 */
export async function generateDetailedAnalysisWithSparkHttp(
  drug1: string,
  drug2: string,
  interactionDescription: string,
  options: {
    model?: string;
  }
): Promise<string> {
  try {
    const requestBody = {
      drug1,
      drug2,
      interactionDescription,
      type: 'detailed',
      model: options.model || 'pro'
    };
    
    console.log('发送到后端AI服务的详细分析请求:', JSON.stringify(requestBody));
    
    const response = await fetch('/api/ai/analyze', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(requestBody)
    });
    
    if (!response.ok) {
      throw new Error(`HTTP错误! 状态: ${response.status}`);
    }
    
    const data = await response.json();
    console.log('收到后端AI服务详细分析响应:', data);
    
    if (data.error) {
      throw new Error(data.error);
    }
    
    // 修改返回值处理以匹配后端响应格式
    return data.analysis || data.result || '';
  } catch (error) {
    console.error('调用后端AI服务生成详细分析时出错:', error);
    throw new Error(`调用AI服务时出错: ${error instanceof Error ? error.message : '未知错误'}`);
  }
}

/**
 * 通过后端代理使用讯飞星火AI生成建议摘要
 * @param drug1 第一种药物名称
 * @param drug2 第二种药物名称
 * @param interactionDescription 相互作用描述
 * @param options 配置选项
 * @returns Promise包含AI分析结果
 */
export async function generateRecommendationSummaryWithSparkHttp(
  drug1: string,
  drug2: string,
  interactionDescription: string,
  options: {
    model?: string;
  }
): Promise<string> {
  try {
    const requestBody = {
      drug1,
      drug2,
      interactionDescription,
      type: 'summary',
      model: options.model || 'pro'
    };
    
    console.log('发送到后端AI服务的建议摘要请求:', JSON.stringify(requestBody));
    
    const response = await fetch('/api/ai/analyze', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(requestBody)
    });
    
    if (!response.ok) {
      throw new Error(`HTTP错误! 状态: ${response.status}`);
    }
    
    const data = await response.json();
    console.log('收到后端AI服务建议摘要响应:', data);
    
    if (data.error) {
      throw new Error(data.error);
    }
    
    // 修改返回值处理以匹配后端响应格式
    return data.analysis || data.result || '';
  } catch (error) {
    console.error('调用后端AI服务生成建议摘要时出错:', error);
    throw new Error(`调用AI服务时出错: ${error instanceof Error ? error.message : '未知错误'}`);
  }
}

export default {
  analyzeDrugInteractionWithSparkHttp,
  generateDetailedAnalysisWithSparkHttp,
  generateRecommendationSummaryWithSparkHttp
};